package paquete;

import java.util.*;

public class Persona {
	//Definición de variables
	protected String nombre;
	protected String apellido1;
	protected String apellido2;
	protected String telefono;
	protected String correo;
	//Crea una lista donde agregar a cada persona los libros, revistas o películas que tenga en su poder.
	List<Articulo> articulos = new ArrayList<Articulo>();
	
	/*
	 * Constructor de la clase Persona
	 * 
	 * Para crear una persona se le debe pasar la información al constructor de 
	 * Cada categoría [Estudiante|Familia|Colega]
	 * 
	 * Colega jefe = new Colega("Manuel", "Villalobos", "Duarte", "89468598", "mavidu@gmail.com","jefe");
	 * 
	 * Solo se agarran los datos de los campos y se le pasan como variables al contructor.
	 * Uds pueden hacer eso ;)
	 * Con los libros es la misma historia.
	 */
	public Persona(String nombre, String apellido1, String apellido2, String telefono, String correo){
		super();
		this.setNombre(nombre);
		this.setApellido1(apellido1);
		this.setApellido2(apellido2);
		this.setTelefono(telefono);
		this.setCorreo(correo);
	};
	
	public Persona(String nombre) {
		super();
		this.nombre = nombre;
	}
	
	/***************************************************************************
	// 					INICIO SETTERS Y GETTERS
	//*************************************************************************/
	public void setNombre(String nombre){
		this.nombre = nombre;
	}
	public String getNombre(){
		return this.nombre;
	}
	
	public void setApellido1(String apellido1){
		this.apellido1 = apellido1;
	}
	public String getApellido1(){
		return this.apellido1;
	}
	
	public void setApellido2(String apellido2){
		this.apellido2 = apellido2;
	}
	public String getApellido2(){
		return this.apellido2;
	}
	
	public void setTelefono(String telefono){
		this.telefono = telefono;
	}
	public String getTelefono(){
		return this.telefono;
	}
	
	public void setCorreo(String correo){
		this.correo = correo;
	}
	public String getCorreo(){
		return this.correo;
	}
	
	//Se agregan artículos a la lista de posesiones de una persona
	//Se aplica el concepto de sobrecarga
	public void setArticulo(Libro libro){articulos.add(libro);};
	public void setArticulo(Revista revista){articulos.add(revista);};
	public void setArticulo(Pelicula pelicula){articulos.add(pelicula);};
	
	//Retorna un arreglo de los artículos que posee la persona
	public List<Articulo> getArticulos(){
		return this.articulos;
	};
	
	
	//**************************************************************************
	// 					FIN SETTERS Y GETTERS
	//**************************************************************************
	
	public String toString(){
		String msg = "";
		msg += "Nombre: \t" + this.getNombre() + " " + this.getApellido1() + " " + this.getApellido2() + "\n";
		msg += "Teléfono: \t" + this.getTelefono() + "\n";
		msg += "Correo: \t" + this.getCorreo() + "\n";
		return msg;
	};
	
	//Retorna un String con los artículos que posee una persona.
		public String getArticulosString(){
			String msg = "";
			for(Articulo i : this.articulos){
				if(i.getClass() == Libro.class ){
					msg += "El libro " + i.getTitulo() + ".\n\t Por " + i.getAutores() + "\n";
				}
				if(i.getClass() == Revista.class){
					msg += "La revista " + i.getTitulo() + ".\n\t Por " + i.getAutores() + "\n";
				}if(i.getClass() == Pelicula.class){
					msg += "La pelicula " + i.getTitulo() + ".\n\t Por " + i.getAutores() + "\n";
				};
			}
			if(msg.equals("")){
				return "No se han registrado artículos";
			}
			msg += "	------------\n";
			return msg;
		};
	
	
}